package com.lnj.community.service;

import com.lnj.community.dao.entity.User;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import org.springframework.security.core.GrantedAuthority;

import java.awt.image.BufferedImage;
import java.util.Collection;
import java.util.Map;

public interface UserService {
    /**
     * 根据id查询用户
     * @param id
     * @return
     */
    public User findUserById(int id);

    /**
     * 注册用户
     * @param user
     */
    public Map<String,Object> register(User user);
    /**
     * 判断用户是否激活
     */
    public int activation(int userId,String code);
    /**
     * 获取验证码
     */
    public BufferedImage getKaptcha(HttpServletResponse response);
    /**
     * 用户登录
     * @param username 用户名或邮箱
     * @param password 密码
     * @param expiredSeconds 登录凭证的有效期（秒）
     * @return
     */
    public Map<String ,Object> login(String username, String password, int expiredSeconds);

    /**
     * 退出登录
     * @param ticket 登录凭证
     */
    void logout(String ticket);



    /**
     * 更新用户头像
     * @param userId 用户id
     * @param headUrl 头像路径
     * @return
     */
    int updateHeadUrl(int userId, String headUrl);

    /**
     * 根据用户名查询用户
     * @param toName 用户名
     * @return
     */
    User findUserByName(String toName);

    //根据id查询密码
    /**
     * 根据id查询密码
     * @param id
     * @return
     */
    String findPassword(int id);

    /**
     * 更新密码
     * @param id
     * @param s
     */
    void updatePassword(int id, String s);

    /**
     * 根据id查询用户权限
     * @param id
     * @return
     */
    public Collection<? extends GrantedAuthority> getAuthorities(int id);
}
